home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 23 / CU Amiga - Super CD-ROM 23 (June 1998).iso / CreatingGames / Utilities / C / ASAP / menu.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-09-09  |  3.1 KB  |  84 lines

  1. /*****************************************************************************
  2.  *                                                                           *
  3.  * ASAP - Amiga Software Authoring Platform                                  *
  4.  *                                                                           *
  5.  * Written by Laurie Perrin                                                  *
  6.  *                                                                           *
  7.  * AMenu wrapper class                                                       *
  8.  *                                                                           *
  9.  *****************************************************************************/
  10.  
  11. #ifndef ASAP_AMenu_H
  12. #define ASAP_AMenu_H
  13.  
  14. #include <New.h>
  15.  
  16. extern "C"
  17. {
  18.  #include <Proto/GadTools.h>
  19.  #include <Proto/Intuition.h>
  20. }
  21.  
  22. class AMenuItem;
  23.  
  24. class AMenu : public Menu
  25. {
  26.  public:
  27.  inline static AMenu * CreateMenus(NewMenu * newMenu, Tag tag1,  ...);
  28.  inline void * operator new(size_t, NewMenu * newMenu, Tag tag1, ...);
  29.  inline static AMenu * CreateMenusA(NewMenu * newMenu, TagItem * taglist);
  30.  inline void * operator new(size_t, NewMenu * newMenu, TagItem * taglist);
  31.  inline void FreeMenus();
  32.  inline void operator delete(void *);
  33.  inline AMenuItem * ItemAddress(unsigned long menuNumber);
  34.  inline BOOL LayoutMenus(APTR vi, Tag tag1,  ...);
  35.  inline BOOL LayoutMenusA(APTR vi, TagItem * taglist);
  36. };
  37. //----------------------------------------------------------------------------
  38. AMenu * AMenu::CreateMenus (NewMenu * newMenu, Tag tag1,  ...)
  39. {
  40.  return CreateMenusA(newMenu, (TagItem *) &tag1);
  41. }
  42. //----------------------------------------------------------------------------
  43. void * AMenu::operator new(size_t, NewMenu * newMenu, Tag tag1, ...)
  44. {
  45.  return AMenu::CreateMenusA(newMenu, (TagItem *) &tag1);
  46. }
  47. //----------------------------------------------------------------------------
  48. AMenu * AMenu::CreateMenusA (NewMenu * newMenu, TagItem * taglist)
  49. {
  50.  return (AMenu *) ::CreateMenusA(newMenu, taglist);
  51. }
  52. //----------------------------------------------------------------------------
  53. void * AMenu::operator new (size_t, NewMenu * newMenu, TagItem * taglist)
  54. {
  55.  return AMenu::CreateMenusA(newMenu, taglist);
  56. }
  57. //----------------------------------------------------------------------------
  58. void AMenu::FreeMenus ()
  59. {
  60.  ::FreeMenus(this);
  61. }
  62. //----------------------------------------------------------------------------
  63. void AMenu::operator delete (void *menu)
  64. {
  65.  ((AMenu *) menu)->FreeMenus();
  66. }
  67. //----------------------------------------------------------------------------
  68. AMenuItem * AMenu::ItemAddress (unsigned long menuNumber)
  69. {
  70.  return (AMenuItem *) ::ItemAddress(this, menuNumber);
  71. }
  72. //----------------------------------------------------------------------------
  73. BOOL AMenu::LayoutMenus (APTR vi, Tag tag1,  ...)
  74. {
  75.  return LayoutMenusA(vi, (TagItem *) &tag1);
  76. }
  77. //----------------------------------------------------------------------------
  78. BOOL AMenu::LayoutMenusA (APTR vi, TagItem * taglist)
  79. {
  80.  return ::LayoutMenusA(this, vi, taglist);
  81. }
  82.  
  83. #endif
  84.